class A {
   void printMsg() => print('A'); 
}
mixin B {
    void printMsg() => print('B'); 
}
mixin C {
    void printMsg() => print('C'); 
}

class BC extends A with B, C {}
class CB extends A with C, B {}
/**
 * 为什么会是这样的结果？实际上可以通过线性分析得到输出结果。理解Mixin线性化分析有一点很重要就是: 在Dart中Mixins多继承并不是真正意义上的多继承，\
 * 实际上还是单继承；而每次Mixin都是会创建一个新的中间类。并且这个中间类总是在基类的上层
 */
main() {
    var bc = BC();
    bc.printMsg();
    
    var cb = CB();
    cb.printMsg();
}
